﻿Imports System.Windows.Forms
Imports Logica

''' <summary>
'''Modifica la contraseña de un usuario 
''' </summary>
''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
Public Class ModificarContrasenna

    Private m_idUsuario As String
    ''' <summary>
    ''' Encargado inicializar el objeto
    ''' </summary>
    ''' <param name="p_idUsuario">Identificación del usuario</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Public Sub New(ByVal p_idUsuario As String)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()
        m_idUsuario = p_idUsuario
        ' Add any initialization after the InitializeComponent() call.

    End Sub
    ''' <summary>
    ''' Revisa si la clave vieja es igual a la que esta almacenada en la BD, si son iguales
    ''' procede a modificar la clave siempre y cuando la clave nueva y la confirmación sean
    ''' iguales
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click

        Dim passViejo As String
        Dim passNuevo As String
        Dim passRepetido As String
        Dim igual As Boolean

        For Each control As Control In gbModificarPass.Controls
            If TypeOf control Is TextBox Then
                If control.Text = "" Or control.Text.Trim = "" Then
                    control.Focus()
                    lblError.ForeColor = Color.Red
                    lblError.Text = "El campo '" & control.Tag & "' está vacío."
                    Exit Sub
                End If
            End If
        Next

        Try

            passViejo = txtContraVieja.Text
            passNuevo = txtContraNueva.Text

            If String.Equals(txtContraNueva.Text, txtRepetida.Text) = True Then

                igual = Gestor.validarContrasenna(passViejo, passNuevo, m_idUsuario)

                If igual = True Then

                    Try

                        passRepetido = txtRepetida.Text
                        Gestor.usuarioModificarContrasenna(passRepetido, m_idUsuario)
                        MessageBox.Show("La contraseña fue modificada exitosamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Me.Close()

                    Catch ex As Exception
                        MessageBox.Show("Error en: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try

                Else

                    lblError.ForeColor = Color.Red
                    lblError.Text = "La contraseña antigua no es igual a la contraseña almacenada."

                End If

            Else
                lblError.ForeColor = Color.Red
                lblError.Text = "La contraseñas ingresadas no coinciden."
            End If

        Catch es As SqlClient.SqlException When es.Number.Equals(4060)
            MessageBox.Show("Error de conexión con la base de datos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub

    ''' <summary>
    ''' Cancela todo y cierra el dialogo.
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    ''' <summary>
    ''' Link que lleva hacia la ayuda del sistema
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del sistema</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub lnkAyuda_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkAyuda.LinkClicked
        Dim ayuda As New MostrarAyuda

        ayuda.ShowDialog()

    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textBox se quita el mensaje de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtContraVieja_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContraVieja.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textBox se quita el mensaje de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtContraNueva_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContraNueva.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textBox se quita el mensaje de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtRepetida_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtRepetida.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Se ejecuta al cargar la pantalla
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 18/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub ModificarContrasenna_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lblError.Text = ""
    End Sub
End Class
